package com.example.readbook.View;

import android.annotation.SuppressLint;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.StyleRes;
import android.view.LayoutInflater;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.TextView;

import com.example.readbook.R;


/**
 * 循环圈
 * Created by Administrator on 2017/5/25/025.
 */

public class MyProgressLoading extends Dialog {
    private TextView tvText;
    private Context  mContext;
    private Object   mCancelContext = null;

    public MyProgressLoading(@NonNull Context context, @StyleRes int themeResId) {
        super(context, themeResId);
        mContext = context;
        Window dialogWindow = getWindow();
        WindowManager.LayoutParams lp = dialogWindow.getAttributes();
        //        dialogWindow.setGravity(Gravity.LEFT | Gravity.TOP);
        //        lp.x = 100; // 新位置X坐标
        //        lp.y = 100; // 新位置Y坐标
        lp.width = 300; // 宽度
        lp.height = 300; // 高度
        lp.alpha = 1.0f; // 透明度
        lp.dimAmount = 0.85f;
        dialogWindow.setAttributes(lp);
        setCanceledOnTouchOutside(false);
    }

    @SuppressLint("InflateParams")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        View view = LayoutInflater.from(mContext).inflate(R.layout.item_press, null);
        setContentView(view);
        tvText = view.findViewById(R.id.Item_Loading_text);
    }

    /**
     * 此方法必须在show之后调用，否则会空指针
     * @param msg
     *         提示文字
     */
    public void setText(String msg) {
        if (isShowing())
            tvText.setText(msg);
    }

    /**
     * 永久显示，等待任务完成
     */
    public void showD() {
        show();
    }

    /**
     * 使用此方法展示可以手动设置弹窗于time时间过后消失
     */
    public void showD(int time) {
        show();
    }

    /**
     * 使用此方法展示可以网络请求失败时取消请求
     */
    public void showD(Object tag) {
        show();
        mCancelContext = tag;
    }

    /**
     * 使用此方法展示可以在时间到之后同时取消网络请求
     * @param time
     *         时间
     * @param tag
     *         如果网络超时，设置tag，取消网络请求
     */
    public void showD(int time, Object tag) {
        show();
        mCancelContext = tag;
    }

    @Override
    public void dismiss() {
        if (isShowing())
            super.dismiss();
    }
}
